Alteryxでyxi形式で配布する際にマクロの中のマクロを表示させたくない!!

Alteryxでyxi形式で配布する際にマクロの中のマクロを表示させたくない!!

Clock Icon2020.02.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Alteryxではツールを自作する手段が数多く用意されています。 その中でも、マクロは作成方法がAlteryxのワークフローと同様で、yxmcファイルを渡せばそのまま利用可能なので手軽に利用できます。 ただまぁ、使う側からするとyxiファイルで配布してくれるととても楽でありがたいですw

というわけで、今回はちょっと込み入ったマクロをyxiファイルで配布する時の小話をしていきます。

マクロとマクロの中のマクロ

Alteryxのマクロは実装方法がワークフローと同様なので、その中で別なマクロを利用できます(自分自身を再帰的に利用することはできません)。 さて、そうなってくると

  • 特定のマクロ内でしか使わないが、複数個所で利用するため処理を共通化した
  • BatchマクロやIterativeマクロを汎用的に利用可能にするための整形処理をStandardマクロでラップした

これらを配布する際、利用することが想定されるのは外側のマクロのみで内部で利用している別なマクロは利用者から存在が確認できる必要はありません。 見えていても問題ないかもしれませんが、yxiファイルで配布した際にそれらもツール一覧に表示されると邪魔だったりします。

そんな時、yxiファイルでは配布用のマクロのみツール一覧に表示させる方法があります。

その方法とは

方法があります、なので早速紹介します。

まずは普通にマクロを作ってyxiで配布可能な形式にします。 マクロをyxiファイルで配布する方法は以下をご覧ください。

Python SDKを使ったツールやR-libraryを除いて、ここで作ったyxiファイルは %APPDATA%\Alteryx\Tools 以下(管理者の場合 %PROGRAMDATA% 以下)にそのままコピーされます。 この際、マクロそのもの動作とは関係するかに関わらずyxi内に含まれるファイルはそのままコピーされます。 この性質を利用することで、今回やりたいことが実現できます。

中身が以下のような構造のyxiファイルを用意します。

test_tool
├── Config.xml
└── JS
    ├── Supporting_Macros
    │   └── test_macro2.yxmc
    └── test_macro.yxmc

これをAlteryxにインストールした際には、その仕組みからJSカテゴリにtest_macroが追加されます。 しかし、test_macro2に関しては %APPDATA 以下にコピーはされるものの、ツール一覧に表示するマクロを探索するパスには含まれてないため、表示されない状態になります。

さて、ここまで来たらお分かりの方も多いかと思います。 test_macro内でtest_macro2を利用していて、相対パスで指定されている場合、test_macroからは通常通り利用可能な状態となっています。 また、ツール一覧に表示する設定になっていないだけで、隠蔽されている訳ではないので直接パスを指定して挿入すれば他のワークフローからも同様に利用可能です。

これで、test_macro2は、今回実現したいことを達成しました。 同様に階層化することで、他のマクロを複数用意することも可能です。

利用に際しての注意点

先ほども書いた通り、test_macro2に関してはツール一覧に表示されていないだけであって、他からの利用を制限するものではありません。 右クリック→Open MacroからAlteryx Designer上で開くことも可能です。

そのため、処理の一部を外部に公開したくない、などの理由での利用はできません。

もし、マクロをワークフローから利用することは可能だが中身を見せたくはないという要件がある場合は、マクロを暗号化して保存するようにしてください。

おわりに

今回は、yxiファイルでマクロを配布する際に、内部で別な依存マクロを持たせる方法を解説しました。 複雑なマクロを作成して配布したいときには活用してみてください。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.